package com.aaa.annotations.demo3;

import java.lang.annotation.ElementType;
import java.lang.annotation.Target;

/**
 * @author C-Q
 * @version 1.1.0
 * @Description: 自定义注解和元注解
 * 自定义注解的语法：
 * public @interface 注解名称{}
 *使用自定义注解。类、方法上、参数上、属性上也可以
 *
 * 元注解的语法：
 * @Target：你的注解可以使用在什么地方
 *      TYPE：表示该注解可以加到类和接口上；
 *      FIELD：表示可以加到属性上；
 *      METHOD：表示可以加到方法上；
 *      PARAMETER：表示可以加到参数；
 *      CONSTRUCTOR：该注解可以使用在构造方法上
 *      LOCAL_VARIABLE：该注解可以使用在局部变量上
 *      ANNOTATION_TYPE：该注解可以使用在其他注解上
 * @Tetention：你的注解在什么时候生效
 *      SOURCE：源码时有效；
 *      CLASS：编译时有效；
 *      RUNTIME：运行时有效，99%都是运行时有效；
 * @Documented：
 *      是否在生成javadoc文档时带该注解
 * @Inherited
 *      是否允许子类继承该注解
 * @date 2022/10/26
 */
    public class Test01 {
        public static void main(String[] args) {
            Cat cat = new Cat();
            cat.green(18);
        }
    }
    @Target({ElementType.TYPE,ElementType.FIELD,ElementType.METHOD,ElementType.PARAMETER,ElementType.CONSTRUCTOR,ElementType.LOCAL_VARIABLE,ElementType.ANNOTATION_TYPE})
    @interface Custom{

    }

    class Cat{
        private String address;

        public void green(int age){
            System.out.println("=============="+age);
        }
    }